home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 143
/
Gekkan Dennou Club - 2000.4 Vol. 143 (Japan).7z
/
Gekkan Dennou Club - 2000.4 Vol. 143 (Japan).bin
/
imelo
/
ttl2fon.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-03-06
|
1KB
|
73 lines
/*
ttlから、フォント用(16×16)へ
*/
#include <stdio.h>
#define HEADSIZE (64+4) //TTLのヘッダサイズ
#define FONTSIZE (16) //FONTのドット数
unsigned char ibuf[768*512/8+68];
unsigned char obuf[768*512/8];
char inName[256],outName[256];
FILE *ifp,*ofp;
int main(argc,argv)
int argc;
char *argv[];
{
int flen;
short wi,he, wib,heb;
short mx,my,cn;
short x,y,l;
unsigned char *d;
int pos;
if( argc!=3 ){
printf("TTLからFONTデータ配列に変更します\n");
printf("@>ttl2fon infile.ttl outfile.fon \n");
goto quick_exit;
}
ifp=fopen(argv[1],"rb");
ofp=fopen(argv[2],"wb");
if( ifp==NULL ){
printf("入力ファイル%sが見つかりません\n",argv[1]);
goto quick_exit;
}
if( ofp==NULL ){
printf("出力ファイル%sが書き込めません\n",argv[2]);
goto quick_exit;
}
flen=filelength(fileno(ifp));
fread(ibuf,sizeof(unsigned char),flen,ifp);
wi=*(short *)&ibuf[0x40];
he=*(short *)&ibuf[0x42];
wib=wi/8; if( (wi%8)!=0 )wib++; mx=wib/2;
heb=he/16; if( (he%16)!=0 )heb++; my=heb;
d=obuf;
for( y=0; y<my; y++ ){
for( x=0; x<mx; x++ ){
for( l=0; l<FONTSIZE; l++ ){
pos=HEADSIZE+(y*FONTSIZE+l)*wib+x*2;
//printf("%d,",pos);
*d++=ibuf[pos];
*d++=ibuf[pos+1];
}
//printf("\n");
}
}
fwrite(obuf,sizeof(unsigned char),mx*my*FONTSIZE*2,ofp);
printf("%d個のユーザーフォントを作成しました\n",mx*my);
quick_exit:;
return(0);
}